<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://www.workerman.net/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

namespace app\middleware;

use Tinywan\Jwt\JwtToken as JwtTokenSer;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;

 //检查jwt判断是否登录
class JwtToken implements MiddlewareInterface
{
    public function process(Request $request, callable $next): Response
    {
        $controller = new \ReflectionClass($request->controller);
        $noNeedLogin = $controller->getDefaultProperties()['noNeedLogin'] ?? [];

        if(in_array($request->action,$noNeedLogin)){
            //不需要登录
            return $next($request);
        }
        $token=$request->header('Authorization');
        if(config('app.debug')){
            if(is_numeric($token)){
                return $next($request);
            }
        }
        if(JwtTokenSer::getCurrentId()){
            return $next($request);
        }
        abort(403);
    }
}
